//
// Generated by Microsoft (R) D3D Shader Disassembler
//
//   using 3Dmigoto v0.6.164 on Fri Nov  6 23:42:01 2026
//
//
// Input signature:
//
// Name                 Index   Mask Register SysValue  Format   Used
// -------------------- ----- ------ -------- -------- ------- ------
// no Input
//
// Output signature:
//
// Name                 Index   Mask Register SysValue  Format   Used
// -------------------- ----- ------ -------- -------- ------- ------
// no Output
cs_5_0
dcl_globalFlags refactoringAllowed
dcl_constantbuffer CB0[35], immediateIndexed
dcl_resource_texture2darray (float,float,float,float) t1
dcl_resource_texture2darray (uint,uint,uint,uint) t2
dcl_uav_structured u0, 4
dcl_input vThreadIDInGroupFlattened
dcl_input vThreadGroupID.xy
dcl_input vThreadID.z
dcl_temps 100
dcl_tgsm_raw g0, 4
dcl_thread_group 64, 1, 1
if_z vThreadIDInGroupFlattened.x
  store_raw g0.x, l(0), l(0)
endif

dcl_resource_texture2d (float,float,float,float) t125
dcl_resource_texture1d (float,float,float,float) t120

ld_indexable(texture1d)(float,float,float,float) r60.xyzw, l(90, 0, 0, 0), t120.xyzw
ld_indexable(texture2d)(float,float,float,float) r52.xyzw, l(0, 0, 0, 0), t125.xyzw

sync_g_t
bfi r0.x, l(28), l(4), vThreadGroupID.x, vThreadIDInGroupFlattened.x
ishr r0.z, vThreadIDInGroupFlattened.x, l(4)
imad r0.y, vThreadGroupID.y, l(16), r0.z
iadd r0.zw, cb0[33].xxxy, l(0, 0, -1, -1)
umin r1.xy, r0.zwzz, r0.xyxx
mov r1.z, vThreadID.z
mov r1.w, l(0)




ld_indexable(texture2darray)(uint,uint,uint,uint) r0.x, r1.xyzw, t2.yxzw
and r0.x, r0.x, l(2)
if_nz r0.x
  ld_indexable(texture2darray)(float,float,float,float) r0.x, r1.xyzw, t1.wxyz
  mad r0.y, r0.x, l(7.96874952), l(0.00392156886)
  ftoi r0.y, r0.y
  utof r2.x, r0.y
  mad r0.x, r2.x, l(-0.125490203), r0.x
  mul_sat r0.x, r0.x, l(8.225806)
  ieq r2.xyzw, r0.yyyy, l(3, 1, 2, 4)
  or r2.xy, r2.yzyy, r2.xxxx
  ieq r0.y, r0.y, l(5)
  lt r0.x, l(0.000000), r0.x
  movc r2.x, r2.x, l(5), l(1)
  and r2.yz, r2.yywy, l(0, 8, 16, 0)
  iadd r2.y, r2.z, r2.y
  and r0.xy, r0.xyxx, l(64, 32, 0, 0)
  iadd r0.y, r0.y, r2.y
  iadd r0.x, r0.x, r0.y
  iadd r0.x, r0.x, r2.x
  or r0.x, r0.x, cb0[34].x
else
  mov r0.x, cb0[34].x
endif
iadd r2.xyz, vThreadIDInGroupFlattened.xxxx, l(64, 128, 192, 0)
bfi r3.xyz, l(28, 28, 28, 0), l(4, 4, 4, 0), vThreadGroupID.xxxx, r2.xyzx
ishr r2.xyz, r2.xyzx, l(4, 4, 4, 0)
imad r2.xyz, vThreadGroupID.yyyy, l(16, 16, 16, 0), r2.xzyx
mov r3.w, r2.x
umin r1.xy, r0.zwzz, r3.xwxx
ld_indexable(texture2darray)(uint,uint,uint,uint) r0.y, r1.xyzw, t2.xyzw
and r0.y, r0.y, l(2)
if_nz r0.y
  ld_indexable(texture2darray)(float,float,float,float) r0.y, r1.xyzw, t1.xwyz
  mad r3.x, r0.y, l(7.96874952), l(0.00392156886)
  ftoi r3.x, r3.x
  utof r3.w, r3.x
  mad r0.y, r3.w, l(-0.125490203), r0.y
  mul_sat r0.y, r0.y, l(8.225806)
  ieq r4.xyzw, r3.xxxx, l(3, 1, 2, 4)
  or r4.xy, r4.yzyy, r4.xxxx
  ieq r3.x, r3.x, l(5)
  lt r0.y, l(0.000000), r0.y
  movc r3.w, r4.x, l(5), l(1)
  and r4.x, r4.y, l(8)
  and r4.y, r4.w, l(16)
  iadd r4.x, r4.y, r4.x
  and r3.x, r3.x, l(32)
  iadd r3.x, r3.x, r4.x
  and r0.y, r0.y, l(64)
  iadd r0.y, r0.y, r3.x
  iadd r0.y, r0.y, r3.w
  or r0.x, r0.y, r0.x
endif
mov r2.xw, r3.zzzy
umin r1.xy, r0.zwzz, r2.wzww
ld_indexable(texture2darray)(uint,uint,uint,uint) r0.y, r1.xyzw, t2.xyzw
and r0.y, r0.y, l(2)
if_nz r0.y
  ld_indexable(texture2darray)(float,float,float,float) r0.y, r1.xyzw, t1.xwyz
  mad r2.z, r0.y, l(7.96874952), l(0.00392156886)
  ftoi r2.z, r2.z
  utof r2.w, r2.z
  mad r0.y, r2.w, l(-0.125490203), r0.y
  mul_sat r0.y, r0.y, l(8.225806)
  ieq r4.xyzw, r2.zzzz, l(3, 1, 2, 4)
  or r3.xy, r4.yzyy, r4.xxxx
  ieq r2.z, r2.z, l(5)
  lt r0.y, l(0.000000), r0.y
  movc r2.w, r3.x, l(5), l(1)
  and r3.x, r3.y, l(8)
  and r3.y, r4.w, l(16)
  iadd r3.x, r3.y, r3.x
  and r2.z, r2.z, l(32)
  iadd r2.z, r2.z, r3.x
  and r0.y, r0.y, l(64)
  iadd r0.y, r0.y, r2.z
  iadd r0.y, r0.y, r2.w
  or r0.x, r0.y, r0.x
endif
umin r1.xy, r0.zwzz, r2.xyxx
ld_indexable(texture2darray)(uint,uint,uint,uint) r0.y, r1.xyzw, t2.xyzw
and r0.y, r0.y, l(2)
if_nz r0.y
  ld_indexable(texture2darray)(float,float,float,float) r0.y, r1.xyzw, t1.xwyz
  mad r0.z, r0.y, l(7.96874952), l(0.00392156886)
  ftoi r0.z, r0.z
  utof r0.w, r0.z
  mad r0.y, r0.w, l(-0.125490203), r0.y
  mul_sat r0.y, r0.y, l(8.225806)
  ieq r1.xyzw, r0.zzzz, l(3, 1, 2, 4)
  or r1.xy, r1.yzyy, r1.xxxx
  ieq r0.z, r0.z, l(5)
  lt r0.y, l(0.000000), r0.y
  movc r0.w, r1.x, l(5), l(1)
  and r1.x, r1.y, l(8)
  and r1.y, r1.w, l(16)
  iadd r1.x, r1.y, r1.x
  and r0.yz, r0.yyzy, l(0, 64, 32, 0)
  iadd r0.z, r0.z, r1.x
  iadd r0.y, r0.y, r0.z
  iadd r0.y, r0.y, r0.w
  or r0.x, r0.y, r0.x
endif
atomic_or g0, l(0), r0.x
sync_g_t
if_z vThreadIDInGroupFlattened.x
  iadd r0.xy, cb0[33].xyxx, l(15, 15, 0, 0)
  ushr r0.xy, r0.xyxx, l(4, 4, 0, 0)
  imad r0.z, vThreadGroupID.y, r0.x, vThreadGroupID.x
  imul null, r0.x, r0.x, vThreadID.z
  imad r0.x, r0.x, r0.y, r0.z
  ld_raw r0.y, l(0), g0.xxxx
  ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r0.z, r0.x, l(0), u0.xxxx
  or r0.y, r0.y, r0.z
  store_structured u0.x, r0.x, l(0), r0.y
endif
ret
// Approximately 0 instruction slots used

///////////////////////////////// HLSL Code /////////////////////////////////
// // ---- Created with 3Dmigoto v0.6.164 on Fri Nov  6 23:42:01 2026
// struct u0_t {
//   float val[1];
// };
// RWStructuredBuffer<u0_t> u0 : register(u0);
//
// Texture2DArray<uint4> t2 : register(t2);
//
// Texture2DArray<float4> t1 : register(t1);
//
// cbuffer cb0 : register(b0)
// {
//   float4 cb0[35];
// }
//
//
//
//
// // 3Dmigoto declarations
// #define cmp -
// Texture1D<float4> IniParams : register(t120);
// Texture2D<float4> StereoParams : register(t125);
//
//
// void main)
// {
//   float4 r0,r1,r2,r3,r4;
//   uint4 bitmask, uiDest;
//   float4 fDest;
//
// // Needs manual fix for instruction:
// // unknown dcl_: dcl_tgsm_raw g0, 4
// // Needs manual fix for instruction:
// // unknown dcl_: dcl_thread_group 64, 1, 1
//   if (vThreadIDInGroupFlattened.x == 0) {
//   // No code for instruction (needs manual fix):
//     store_raw g0.x, l(0), l(0)
//   }
//   GroupMemoryBarrierWithGroupSync();
//   bitmask.x = ((~(-1 << 28)) << 4) & 0xffffffff;  r0.x = (((uint)vThreadGroupID.x << 4) & bitmask.x) | ((uint)vThreadIDInGroupFlattened.x & ~bitmask.x);
//   r0.z = (uint)vThreadIDInGroupFlattened.x >> 4;
//   r0.y = mad((int)vThreadGroupID.y, 16, (int)r0.z);
//   r0.zw = asint(cb0[33].xy) + int2(-1,-1);
//   r1.xy = min((uint2)r0.xy, (uint2)r0.zw);
//   r1.z = vThreadID.z;
//   r1.w = 0;
//   r0.x = t2.Load(r1.xyzw).y;
//   r0.x = (int)r0.x & 2;
//   if (r0.x != 0) {
//     r0.x = t1.Load(r1.xyzw).w;
//     r0.y = r0.x * 7.96874952 + 0.00392156886;
//     r0.y = (int)r0.y;
//     r2.x = (uint)r0.y;
//     r0.x = r2.x * -0.125490203 + r0.x;
//     r0.x = saturate(8.22580624 * r0.x);
//     r2.xyzw = cmp((int4)r0.yyyy == int4(3,1,2,4));
//     r2.xy = (int2)r2.yz | (int2)r2.xx;
//     r0.y = cmp((int)r0.y == 5);
//     r0.x = cmp(0 < r0.x);
//     r2.x = r2.x ? 5 : 1;
//     r2.yz = r2.yw ? float2(0,0) : 0;
//     r2.y = (int)r2.z + (int)r2.y;
//     r0.xy = r0.xy ? float2(0,0) : 0;
//     r0.y = (int)r0.y + (int)r2.y;
//     r0.x = (int)r0.x + (int)r0.y;
//     r0.x = (int)r0.x + (int)r2.x;
//     r0.x = (int)r0.x | asint(cb0[34].x);
//   } else {
//     r0.x = cb0[34].x;
//   }
//   r2.xyz = (int3)vThreadIDInGroupFlattened.xxx + int3(64,128,192);
//   bitmask.x = ((~(-1 << 28)) << 4) & 0xffffffff;  r3.x = (((uint)vThreadGroupID.x << 4) & bitmask.x) | ((uint)r2.x & ~bitmask.x);
//   bitmask.y = ((~(-1 << 28)) << 4) & 0xffffffff;  r3.y = (((uint)vThreadGroupID.x << 4) & bitmask.y) | ((uint)r2.y & ~bitmask.y);
//   bitmask.z = ((~(-1 << 28)) << 4) & 0xffffffff;  r3.z = (((uint)vThreadGroupID.x << 4) & bitmask.z) | ((uint)r2.z & ~bitmask.z);
//   r2.xyz = (uint3)r2.xyz >> int3(4,4,4);
//   r2.xyz = mad((int3)vThreadGroupID.yyy, int3(16,16,16), (int3)r2.xzy);
//   r3.w = r2.x;
//   r1.xy = min((uint2)r3.xw, (uint2)r0.zw);
//   r0.y = t2.Load(r1.xyzw).y;
//   r0.y = (int)r0.y & 2;
//   if (r0.y != 0) {
//     r0.y = t1.Load(r1.xyzw).w;
//     r3.x = r0.y * 7.96874952 + 0.00392156886;
//     r3.x = (int)r3.x;
//     r3.w = (uint)r3.x;
//     r0.y = r3.w * -0.125490203 + r0.y;
//     r0.y = saturate(8.22580624 * r0.y);
//     r4.xyzw = cmp((int4)r3.xxxx == int4(3,1,2,4));
//     r4.xy = (int2)r4.yz | (int2)r4.xx;
//     r3.x = cmp((int)r3.x == 5);
//     r0.y = cmp(0 < r0.y);
//     r3.w = r4.x ? 5 : 1;
//     r4.x = r4.y ? 0.000000 : 0;
//     r4.y = r4.w ? 0.000000 : 0;
//     r4.x = (int)r4.y + (int)r4.x;
//     r3.x = r3.x ? 0.000000 : 0;
//     r3.x = (int)r3.x + (int)r4.x;
//     r0.y = r0.y ? 0.000000 : 0;
//     r0.y = (int)r0.y + (int)r3.x;
//     r0.y = (int)r0.y + (int)r3.w;
//     r0.x = (int)r0.y | (int)r0.x;
//   }
//   r2.xw = r3.zy;
//   r1.xy = min((uint2)r2.wz, (uint2)r0.zw);
//   r0.y = t2.Load(r1.xyzw).y;
//   r0.y = (int)r0.y & 2;
//   if (r0.y != 0) {
//     r0.y = t1.Load(r1.xyzw).w;
//     r2.z = r0.y * 7.96874952 + 0.00392156886;
//     r2.z = (int)r2.z;
//     r2.w = (uint)r2.z;
//     r0.y = r2.w * -0.125490203 + r0.y;
//     r0.y = saturate(8.22580624 * r0.y);
//     r4.xyzw = cmp((int4)r2.zzzz == int4(3,1,2,4));
//     r3.xy = (int2)r4.yz | (int2)r4.xx;
//     r2.z = cmp((int)r2.z == 5);
//     r0.y = cmp(0 < r0.y);
//     r2.w = r3.x ? 5 : 1;
//     r3.x = (int)r3.y & 8;
//     r3.y = r4.w ? 0.000000 : 0;
//     r3.x = (int)r3.y + (int)r3.x;
//     r2.z = r2.z ? 0.000000 : 0;
//     r2.z = (int)r2.z + (int)r3.x;
//     r0.y = r0.y ? 0.000000 : 0;
//     r0.y = (int)r0.y + (int)r2.z;
//     r0.y = (int)r0.y + (int)r2.w;
//     r0.x = (int)r0.y | (int)r0.x;
//   }
//   r1.xy = min((uint2)r2.xy, (uint2)r0.zw);
//   r0.y = t2.Load(r1.xyzw).y;
//   r0.y = (int)r0.y & 2;
//   if (r0.y != 0) {
//     r0.y = t1.Load(r1.xyzw).w;
//     r0.z = r0.y * 7.96874952 + 0.00392156886;
//     r0.z = (int)r0.z;
//     r0.w = (uint)r0.z;
//     r0.y = r0.w * -0.125490203 + r0.y;
//     r0.y = saturate(8.22580624 * r0.y);
//     r1.xyzw = cmp((int4)r0.zzzz == int4(3,1,2,4));
//     r1.xy = (int2)r1.yz | (int2)r1.xx;
//     r0.z = cmp((int)r0.z == 5);
//     r0.y = cmp(0 < r0.y);
//     r0.w = r1.x ? 5 : 1;
//     r1.x = r1.y ? 0.000000 : 0;
//     r1.y = r1.w ? 0.000000 : 0;
//     r1.x = (int)r1.y + (int)r1.x;
//     r0.yz = r0.yz ? float2(0,0) : 0;
//     r0.z = (int)r0.z + (int)r1.x;
//     r0.y = (int)r0.y + (int)r0.z;
//     r0.y = (int)r0.y + (int)r0.w;
//     r0.x = (int)r0.y | (int)r0.x;
//   }
//   // Needs manual fix for instruction:
// atomic_or g0, l(0), r0.x
//   InterlockedOr(dest, value, orig_value);
//   GroupMemoryBarrierWithGroupSync();
//   if (vThreadIDInGroupFlattened.x == 0) {
//     r0.xy = asint(cb0[33].xy) + int2(15,15);
//     r0.xy = (uint2)r0.xy >> int2(4,4);
//     r0.z = mad((int)vThreadGroupID.y, (int)r0.x, (int)vThreadGroupID.x);
//     r0.x = (int)r0.x * (int)vThreadID.z;
//     r0.x = mad((int)r0.x, (int)r0.y, (int)r0.z);
//   // No code for instruction (needs manual fix):
//     ld_raw r0.y, l(0), g0.xxxx
//     r0.z = u0[r0.x].val[0/4];
//     r0.y = (int)r0.y | (int)r0.z;
//     u0[r0.x].val[0/4] = r0.y;
//   }
//   return;
// }
//////////////////////////////// HLSL Errors ////////////////////////////////
// C:\Program Files (x86)\Steam\steamapps\common\FAR Changing Tides\ShaderFixes\198557320ccda268-cs_replace.txt(25,10): error X3000: syntax error: unexpected token ')'
/////////////////////////////////////////////////////////////////////////////
